package top.kaoshanji.p1ch03a;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
import org.springframework.jndi.JndiObjectFactoryBean;

import javax.sql.DataSource;

/**
 * 代码清单-p1ch03a-71页a：@Profile注解基于激活的profile实现bean的装配
 * @author kaoshanji
 * ^_^
 * create time 2025/4/23 9:13
 */
@Configuration
public class DataSourceConfig {

    /**
     * 开发环境的数据源
     * 当profile激活状态为 dev 时有效
     * @return DataSource
     */
    @Bean(destroyMethod = "shutdown")
    @Profile("dev")
    public DataSource embeddedDataSource() {
        return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2)
                .addScript("classpath:schema.sql")
                .addScript("classpath:test-data.sql")
                .build();
    }

    /**
     * 生产环境的数据源
     * 当profile激活状态为 prod 时有效
     * @return DataSource
     */
    @Bean
    @Profile("prod")
    public DataSource jndiDataSource() {
        JndiObjectFactoryBean jndiObjectFactoryBean = new JndiObjectFactoryBean();
        // 。。。
        // 并不知道这是什么数据源
        return (DataSource)jndiObjectFactoryBean.getObject();
    }

}
